iT邦幫忙

DAY 10
4

資訊學院的30門課系列 第 10

資訊學院的30門課-網路通訊概論

  • 分享至 

  • xImage
  •  

有一支運行中的視訊伺服器監控程式,
使用Java開socket連到service的port看是否活著,
可是誤判率極高,並在視訊伺服器留下許多垃圾訊息。
到底程式出了甚麼事?
1990年代,具圖型使用者界面的網頁瀏覽器被發明,網際網路開
始大紅大紫,計算機概論中就使用了大量篇幅在介紹各個layer的
不同,那時甚麼叫做bridge?甚麼叫做router?甚麼叫做switch?
實在有聽沒有懂,唯一可以摸到的網路設備,就是自己的宿舍網路卡
跟RG58那台同軸電纜集線裝置。

網際網路那麼盛行,不能免俗的,我也修了網路通訊概論,這門課已
經比計算機網路教的簡單多了。其中教到七層架構、token ring、
FDDI、Ethernet。當時真的是用死背的,我連課本都沒買,背的我
真的不行,後來十年後去管理IPTV Server Farm的兩部大門神時,
才略懂一點網路。這門課比較特別的是,好像不教一下programming
,不算是資訊系。期末project是交一個berkeley socket寫出來
的通訊程式。

是的,這門課學到的socket programming技巧影響很深,出了社會
,到了我們公司後,別處我不知道,我發覺若不會socket programming,
當framework沒有高階api可呼叫時,事情就做不下去了。

當時有一個系統監控程式引,被監控端是同事K負責的視訊伺服器,
監控程式卻是另一位同事C撰寫的,使用Java開socket連到service
的port看是否活著,可是誤判率極高,並在視訊伺服器留下許多垃圾訊息。

是的!同事C只是去看Port有沒有Daemon運作,但若Daemon裝死,
整個Daemon要正常運作的條件很多,首先DB要正常,主機的資源也要夠,
但他這隻Java程式的作用只有Port Scan,然後因為TCP連線沒有依照
RTSP的規定關閉,每掃描一次,都在主機留下一個錯誤訊息。

因為誤報率不堪其擾,所以決定自救。我首先我使用ethereal去抓取
視訊伺服器跟用戶端的通話內容,然後我去找RTSP
(Real Time Streamming Protocol)的RFC來看,
使用學的到的berkeley socket,在一台Linux主機使用C語言重寫監控程式,
依照RTSP規定送出封包,完整模擬用戶端行為,判斷主機丟回的錯誤訊息,
最後呼叫之前以經開發好的傳送簡訊API、傳送郵件API。
正確率提升到接近100%,主機上也沒了垃圾訊息,終於可以快樂睡覺。

另外,socket programming的應用還有數例,將於課程Network Programming、
Internet Technology與Multimedia communication中分享。
其中包含使用舊型機上盒實作MPEG2協定分析儀。

更多分享內容: 資訊學院的30門課-課程一覽表


上一篇
資訊學院的30堂課-資料庫系統管理 DBMS
下一篇
資訊學院的30門課-網際網路技術Internet Technology
系列文
資訊學院的30門課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言